
package view;

import java.util.List;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import model.UnidadeModel;

/**
 *
 * @author Uelinton
 */
public class UnidadeTableModel extends AbstractTableModel {

    private List<UnidadeModel> unidades;
    private String[] colunas;
    
    public UnidadeTableModel(List<UnidadeModel> unidades) {
        this.unidades = unidades;
        colunas = new String[] {"Codigo" , "Descrição"};
        
    }

    @Override
    public String getColumnName(int column) {
        return colunas[column];
    }
    
    @Override
    public int getRowCount() {
        return unidades.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        
        UnidadeModel unidade = unidades.get(rowIndex);
                
        switch (columnIndex) {
            case 0: return unidade.getCodigo();
            case 1: return unidade.getDescricao();
        }
        
        return null;        
    }
    
    
    @Override
    public void fireTableDataChanged() {   
        Object[] listeners = listenerList.getListenerList();         
        for (int i = listeners.length-2; i>=0; i-=2) 
            if (listeners[i]==TableModelListener.class) 
                ((TableModelListener)listeners[i+1]).tableChanged(new TableModelEvent(this));
    }
    
    public void addListUnidade(List<UnidadeModel> unidades) {        
        this.unidades.addAll(unidades);
        fireTableDataChanged();       
    }
    
    public void addUnidade(UnidadeModel model) {       
        unidades.add(model);         
        fireTableDataChanged();        
    }  
    
    public void removeUnidade(UnidadeModel model) {  
        int index = unidades.indexOf(model);  
        if (index == -1)  
            return;       
        unidades.remove(index);   
        fireTableDataChanged();              
    }
     
    public void updatedUnidade(UnidadeModel model) {  
        unidades.indexOf(model);  
        fireTableDataChanged();   
    }
            
    public UnidadeModel getUnidade( int row ) {  
        return unidades.get(row);
    }
}
